#It is important to note that descriptors are assigned to a class, not an instance.
#http://www.devx.com/opensource/Article/31482/0/page/4
class Descriptor(object):

    def __init__(self):
        self._name = ''

    def __get__(self, instance, owner):
        print "Getting: %s" % self._name
        return self._name

    def __set__(self, instance, name):
        print "Setting: %s" % name
        self._name = name.title()

    def __delete__(self, instance):
        print "Deleting: %s" %self._name
        del self._name

class Person(object):
    name = Descriptor()

user      = Person()
user.name = 'john smith'
print user.name
del user.name

